// src/utils/request.ts 数据请求的封装
import axios from 'axios'
import { ElLoading } from 'element-plus'
import router from '@/router'

// 开发环境  npm run dev    ---- 开发阶段
// 生产环境  npm run build  ---- 上线阶段
// process.env.NODE_ENV 
//    npm run dev    development
//    npm run build  production
const isDev = process.env.NODE_ENV === 'development'

// 自定义axios
const ins = axios.create({
  // 思考 开发环境 和 生产环境 请求的地址是一致的吗
  // baseURL: 'http://121.89.205.189:3000/admin'
  baseURL: isDev ? 'http://121.89.205.189:3000/admin' : 'http://121.89.205.189:3000/admin'
})

// 设置请求拦截器
ins.interceptors.request.use((config) => {

  // 所有的请求去携带有 token 验证登录的信息
  config.headers.token = localStorage.getItem('token') || ''

  // 也可以展示loading动画
  ElLoading.service({
    lock: true,
    text: 'Loading',
    background: 'rgba(0, 0, 0, 0.7)',
  })
  return config
}, (err) => {
  return Promise.reject(err)
})

// 请求响应的拦截器
ins.interceptors.response.use((response) => {

  const loadingInstance =  ElLoading.service({
    lock: true,
    text: 'Loading',
    background: 'rgba(0, 0, 0, 0.7)',
  })
  loadingInstance.close()

  if (response.data.code === '10119') {
    // token 无效  需要重新登录
    router.push('/login')
    return 
  } else {
    return response
  }

}, (err) => {
  return Promise.reject(err)
})

export default ins